<?php
require_once('config_tinybrowser.php');
require_once('security.php');
// Set language
if(isset($tinybrowser['language']) && file_exists('langs/'.$tinybrowser['language'].'.php'))
	{
	require_once('langs/'.$tinybrowser['language'].'.php'); 
	}
else
	{
	require_once('langs/en.php'); // Falls back to English
	}
require_once('fns_tinybrowser.php');

// Assign file operation variables
$typenow = (isset($_GET['type']) ? $_GET['type'] : 'image');
$standalone = ((isset($_GET['feid']) && $_GET['feid']!='') ? true : false);
$foldernow = (isset($_REQUEST['folder']) ? urldecode($_REQUEST['folder']) : '');

if($standalone)
	{
	$passfeid = '&feid='.$_GET['feid'];	
	$rowhlightinit =  ' onload="rowHighlight();"';
	}
else
	{
	$passfeid = '';
	$rowhlightinit =  '';	
	}

// Assign browsing options
$sortbynow = (isset($_REQUEST['sortby']) ? $_REQUEST['sortby'] : $tinybrowser['order']['by']);
$sorttypenow = (isset($_REQUEST['sorttype']) ? $_REQUEST['sorttype'] : $tinybrowser['order']['type']);
$sorttypeflip = ($sorttypenow == 'asc' ? 'desc' : 'asc');  
$viewtypenow = (isset($_REQUEST['viewtype']) ? $_REQUEST['viewtype'] : $tinybrowser['view']['image']);
$findnow = (isset($_POST['find']) && !empty($_POST['find']) ? $_POST['find'] : false);
$showpagenow = (isset($_REQUEST['showpage']) ? $_REQUEST['showpage'] : 0);

// Assign url pass variables
$passfolder = '&folder='.urlencode($foldernow);
$passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
$passfind = '&action='.$findnow;
$passviewtype = '&viewtype='.$viewtypenow;
$passsortby = '&sortby='.$sortbynow.'&sorttype='.$sorttypenow;

// Assign view, thumbnail and link paths
$browsepath = $tinybrowser['path'][$typenow].$foldernow;
$linkpath = $tinybrowser['link'][$typenow].$foldernow;
$thumbpath = S_BASE_URL.'uploaded-files/_thumbs/'.$foldernow;
$thumbpath = ROOT_URL.'uploaded-files/'.$foldernow.'_thumbs/';
$sBaseThumbPath = S_BASE_URL.'uploaded-files/'.$foldernow.'_thumbs/';

// Assign sort parameters for column header links
$sortbyget = array();
$sortbyget['name'] = '&viewtype='.$viewtypenow.'&sortby=name';
$sortbyget['size'] = '&viewtype='.$viewtypenow.'&sortby=size'; 
$sortbyget['type'] = '&viewtype='.$viewtypenow.'&sortby=type'; 
$sortbyget['modified'] = '&viewtype='.$viewtypenow.'&sortby=modified';
$sortbyget['dimensions'] = '&viewtype='.$viewtypenow.'&sortby=dimensions'; 
$sortbyget[$sortbynow] .= '&sorttype='.$sorttypeflip;

// Assign css style for current sort type column
$thclass = array();
$thclass['name'] = '';
$thclass['size'] = ''; 
$thclass['type'] = ''; 
$thclass['modified'] = '';
$thclass['dimensions'] = ''; 
$thclass[$sortbynow] = ' class="'.$sorttypenow.'"';

// Initalise alert array
$notify = array(
	'type' => array(),
	'message' => array()
);
$newthumbqty = 0;

// read folder contents if folder exists
if(file_exists($tinybrowser['docroot'].$browsepath))
	{
	// Read directory contents and populate $file array
	$dh = opendir($tinybrowser['docroot'].$browsepath);
	$file = array();
	while (($filename = readdir($dh)) !== false)
		{
		if($filename != '.' && $filename != '..' && !is_dir($tinybrowser['docroot'].$browsepath.$filename))
			{
			// search file name if search term entered
			if($findnow) $exists = stripos($filename,$findnow);
	
			// assign file details to array, for all files or those that match search
			if(!$findnow || ($findnow && $exists !== false))
				{
				$file['name'][] = $filename;
				$file['sortname'][] = strtolower($filename);
				$file['modified'][] = filemtime($tinybrowser['docroot'].$browsepath.$filename);
				$file['size'][] = filesize($tinybrowser['docroot'].$browsepath.$filename);
	
				// image specific info or general
				if($typenow=='image' && $imginfo = getimagesize($tinybrowser['docroot'].$browsepath.$filename))
					{
					$file['width'][] = $imginfo[0];
					$file['height'][] = $imginfo[1];
					$file['dimensions'][] = $imginfo[0] + $imginfo[1];
					$file['type'][] = $imginfo['mime'];
					
					// Check a thumbnail exists
					if(!file_exists($tinybrowser['docroot'].$browsepath.'_thumbs/')) createfolder($tinybrowser['docroot'].$browsepath.'_thumbs/',$tinybrowser['unixpermissions']);
			  		$thumbimg = $tinybrowser['docroot'].$browsepath.'_thumbs/_'.$filename;
					if (!file_exists($thumbimg))
						{
						$nothumbimg = $tinybrowser['docroot'].$browsepath.$filename;
						$mime = getimagesize($nothumbimg);
						$yes = false;
						$no = true;
						foreach($valid_img_mime as $key => $value) {
							if($mime['mime'] == $value) {
								$yes = true;
							}
							else {
								$no = true;
							}
						}
						if($yes == true) {
							$im = convert_image($nothumbimg,$mime['mime']);
							resizeimage($im,$tinybrowser['thumbsize'],$tinybrowser['thumbsize'],$thumbimg,$tinybrowser['thumbquality'],$mime['mime']);
							imagedestroy($im);
							$newthumbqty++;
						}
						else {
							
						}
						}
					}
				else 
					{
					$file['width'][] = 'N/A';
					$file['height'][] = 'N/A';
					$file['dimensions'][] = 'N/A';
					$file['type'][] = returnMIMEType($filename);
					}
				}			
			}
		}
	closedir($dh);
	}
// create file upload folder
else
	{
	$success = createfolder($tinybrowser['docroot'].$browsepath,$tinybrowser['unixpermissions']);
	if($success)
		{
		if($typenow=='image') createfolder($tinybrowser['docroot'].$browsepath.'_thumbs/',$tinybrowser['unixpermissions']);
		$notify['type'][]='success';
		$notify['message'][]=sprintf(TB_MSGMKDIR, $browsepath);
		}
	else
		{
		$notify['type'][]='error';
		$notify['message'][]=sprintf(TB_MSGMKDIRFAIL, $browsepath);
		}
	}
	
// Assign directory structure to array
$browsedirs=array();
dirtree($browsedirs,$tinybrowser['docroot'],$tinybrowser['path'][$typenow]);
	
// generate alert if new thumbnails created
if($newthumbqty>0)
   {
	$notify['type'][]='info';
	$notify['message'][]=sprintf(TB_MSGNEWTHUMBS, $newthumbqty);
	}
	

// determine sort order
$sortorder = ($sorttypenow == 'asc' ? SORT_ASC : SORT_DESC);
$num_of_files = (isset($file['name']) ? count($file['name']) : 0);

if($num_of_files>0)
	{
	// sort files by selected order
	sortfileorder($sortbynow,$sortorder,$file);
	}

// determine pagination
if($tinybrowser['pagination']>0)
	{
	$showpage_start = ($showpagenow ? ($_REQUEST['showpage']*$tinybrowser['pagination'])-$tinybrowser['pagination'] : 0);
	$showpage_end = $showpage_start+$tinybrowser['pagination'];
	if($showpage_end>$num_of_files) $showpage_end = $num_of_files;
	}
else
	{
	$showpage_start = 0;
	$showpage_end = $num_of_files;
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>TinyBrowser :: <?php echo TB_BROWSE; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
if(!$standalone && $tinybrowser['integration']=='tinymce')
	{
	?><script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script><?php 
	}
else
	{
	?><link rel="stylesheet" type="text/css" media="all" href="css/stylefull_tinybrowser.css" /><?php 
	}
?>
<link rel="stylesheet" type="text/css" media="all" href="css/style_tinybrowser.css.php" />
<link rel="stylesheet" type="text/css" media="all" href="css/pagination.css" />
<script language="javascript" type="text/javascript" src="js/jquery-1.3.1.min.js"></script>
<script language="javascript" type="text/javascript" src="js/tinybrowser.js.php?<?php echo substr($passfeid,1); ?>"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
	$('body').append('<div id="fade">&nbsp;</div><div class="title-info"><div class="gutter"></div></div><div class="insertOverlay"><div class="gutter"><img src="img/loading.gif" style="margin-top:150px;margin-left:375px;" /></div></div>');
	$('.title-info').hover(function () {
		$(this).show();
	},
	function () {
		$(this).hide();
	});
	$('.img-browser, .detailInfo').hover(function () {
		$(this).css('background-color', '#b2e1ff');
		$('.title-info .gutter').html('<strong>Click to insert this file.</strong>');
		$('.title-info').show();
	},
	function () {
		$('.title-info').hide();
		$(this).css('background-color', 'transparent');
	}
	).click(function() {
		var folder = '<?php echo $foldernow ?>';
		var filename = encodeURIComponent($(this).attr('title'));
		$('.insertOverlay').html('<img src="img/loading.gif" style="margin-top:150px;margin-left:375px;" />');
		if ($(this).hasClass('swf')) {
			$('.insertOverlay').load('handle.php?filename='+filename+'&folder='+folder+'&swf=true');
		}
		else {
			$('.insertOverlay').load('handle.php?filename='+filename+'&folder='+folder);
		}
		$('#fade').fadeIn();
		$('.insertOverlay').fadeIn();
	});
	$('.closeOverlay').live('click', function(){
		$('#fade').fadeOut();
		$('.insertOverlay').fadeOut();
	});
	$('.showOverlay').live('click', function(){
		$('#fade').fadeIn();
		$('.insertOverlay').fadeIn();
	});
});
</script>
</head>
<body>
<?php
if(count($notify['type'])>0) alert($notify);
form_open('foldertab',false,basename($_SERVER['SCRIPT_NAME']),'?type='.$typenow.$passviewtype.$passsortby.$passfeid);
?>
<div class="tabs">
<ul>
<li id="browse_tab" class="current"><span><a href="tinybrowser.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_BROWSE; ?></a></span></li><?php
if($tinybrowser['allowupload']) 
	{
	?><li id="upload_tab"><span><a href="upload.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_UPLOAD; ?></a></span></li><?php
	}
if($tinybrowser['allowedit'] || $tinybrowser['allowdelete'])
	{
	?><li id="edit_tab"><span><a href="edit.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_EDIT; ?></a></span></li><?php
	}
if($tinybrowser['allowfolders'])
	{
	?><li id="folders_tab"><span><a href="folders.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_FOLDERS; ?></a></span></li><?php
	}
// Display folder select, if multiple exist
if(count($browsedirs)>1)
	{
	?><li id="folder_tab" class="right"><span><?php
	form_select($browsedirs,'folder',TB_FOLDERCURR,urlencode($foldernow),true);
	?></span></li><?php
	} 
?>
</ul>
</div>
</form>
<div class="panel_wrapper">
<div id="general_panel" class="panel currentmod">
<fieldset>
<legend><?php echo TB_BROWSEFILES; ?></legend>
<?php
form_open('browse','custom',basename($_SERVER['SCRIPT_NAME']),'?type='.$typenow.$passfolder.$passfeid);
?>
<div class="pushleft">
<?php

// Offer view type if file type is image
if($typenow=='image')
	{
	$select = array(
		array('thumb',TB_THUMBS),
		array('detail',TB_DETAILS)
	);
	form_select($select,'viewtype',TB_VIEW,$viewtypenow,true);
	}
	
// Show page select if pagination is set
if($tinybrowser['pagination']>0)
	{
	$pagelimit = ceil($num_of_files/$tinybrowser['pagination'])+1;
	$page = array();
	for($i=1;$i<$pagelimit;$i++)
		{
		$page[] = array($i,TB_PAGE.' '.$i);
		}
	if($i>2) form_select($page,'showpage',TB_SHOW,$showpagenow,true);
	}
?>
</div><div class="pushright"><?php

form_hidden_input('sortby',$sortbynow);
form_hidden_input('sorttype',$sorttypenow);
form_text_input('find',false,$findnow,25,50);
form_submit_button('search',TB_SEARCH,'');

?></div>
<?php

// if image show dimensions header
if($typenow=='image')
	{
	$imagehead = '<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['dimensions'].'"'.$thclass['dimensions'].'>'.TB_DIMENSIONS.'</a></th>';
	}
else $imagehead = '';

echo '<div class="tabularwrapper"><table class="browse">'
		.'<tr><th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['name'].'"'.$thclass['name'].'>'.TB_FILENAME.'</a></th>'
		.'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['size'].'"'.$thclass['size'].'>'.TB_SIZE.'</a></th>'
		.$imagehead
		.'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['type'].'"'.$thclass['type'].'>'.TB_TYPE.'</th>'
		.'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['modified'].'"'.$thclass['modified'].'>'.TB_DATE.'</th></tr>';
function safe_dirname($path)
{
   $dirname = dirname($path);
   return $dirname == '/' ? '' : $dirname;
}
// show image thumbnails, unless detail view is selected
if($typenow=='image' && $viewtypenow != 'detail')
	{
	echo '</table></div>';

	for($i=$showpage_start;$i<$showpage_end;$i++)
		{
			$filename = strtoupper($file['name'][$i]) ;
			$exts = split("[/\\.]", $filename) ;
			$n = count($exts)-1;
			$exts = $exts[$n];
			$images = array('GIF', 'JPEG', 'JPG', 'BMP', "PNG");
			if($exts == 'SWF') {$class = ' swf';}
			else {$class= '';}
		echo '<div style="cursor:pointer" class="img-browser'.$class.'" title="'.$file['name'][$i].'">
		<img src="';
		if(file_exists($sBaseThumbPath.'_'.$file['name'][$i])) {
			echo $thumbpath.'_'.$file['name'][$i];
		}
		else {
			if(file_exists(S_BASE_URL.'includes/admin/editors/fckeditor/editor/plugins/tinybrowser/img/icons/'.$exts.'.png')) {
				echo ROOT_URL.'includes/admin/editors/fckeditor/editor/plugins/tinybrowser/img/icons/'.$exts.'.png';
			}
			else {
				echo ROOT_URL.'includes/admin/editors/fckeditor/editor/plugins/tinybrowser/img/icons/DEFAULT.png';
			}
		}
		echo '" />
		<div class="filename">'.$file['name'][$i].'</div>';
		echo '</div>';
	}
	}
else
	{
	for($i=$showpage_start;$i<$showpage_end;$i++)
		{
		$alt = (IsOdd($i) ? 'r1' : 'r0');
		echo '<tr class="'.$alt.'">';
		if($typenow=='image') { echo '<td><a class="imghover detailInfo" href="#" title="'.$file['name'][$i].'"><img src="';
		if(file_exists($sBaseThumbPath.'_'.$file['name'][$i])) {
			echo $thumbpath.'_'.$file['name'][$i];
		}
		else {
			$filename = strtoupper($file['name'][$i]) ;
			$exts = split("[/\\.]", $filename) ;
			$n = count($exts)-1;
			$exts = $exts[$n];
			if(file_exists(S_BASE_URL.'includes/admin/editors/fckeditor/editor/plugins/tinybrowser/img/icons/'.$exts.'.png')) {
				echo ROOT_URL.'includes/admin/editors/fckeditor/editor/plugins/tinybrowser/img/icons/'.$exts.'.png';
			}
			else {
				echo ROOT_URL.'includes/admin/editors/fckeditor/editor/plugins/tinybrowser/img/icons/DEFAULT.png';
			}
			echo '" width="128" height="128';
		}
		echo '" />';
		echo truncate_text($file['name'][$i],30).'</a></td>';
		}
		else echo '<td><a href="#" class="detailInfo" title="'.$file['name'][$i].'">'.truncate_text($file['name'][$i],30).'</a></td>';
		echo '<td>'.bytestostring($file['size'][$i],1).'</td>';
		if($typenow=='image') echo '<td>'.$file['width'][$i].' x '.$file['height'][$i].'</td>';	
		echo '<td>'.$file['type'][$i].'</td>'
			.'<td>'.date($tinybrowser['dateformat'],$file['modified'][$i]).'</td></tr>'."\n";
		}
	echo '</table></div>';
	}
?>
</fieldset></div></div>
<form name="passform"><input name = "fileurl" type="hidden" value= "" /></form>
</body>
</html>
